package cn.centec.bid.util;

import cn.centec.bid.entity.*;
import cn.centec.core.constant.RequestMethod;
import cn.centec.core.entity.Result;
import cn.centec.core.entity.StandardReceiveParam;
import cn.centec.core.entity.StandardRequestParam;
import org.springframework.transaction.annotation.Transactional;

/**
 * 采购中心AIP工具 - 接收处理器 - 招投标业务
 *
 * @author 延晓磊
 * @since 2022年11月04日
 */
public class Centec6BidReceiveHandler {

    /**
     * 处理请求
     *
     * @param param
     * @return
     *
     * @author 延晓磊
     * @since 2022年11月04日
     */
    @Transactional
    public Result handle(StandardRequestParam param){
        switch (param.getMethod()) {
            case RequestMethod.Bid.Receive.SUPPLY_CREATE:
                // 创建报价/修改报价
                return this.createSupply(StandardReceiveParam.build(param.getParam(), StandardSupplyCreateParam.class));
            case RequestMethod.Bid.Receive.CHECK_SUPPLIER_ACCESS_INFO:
                return this.checkSupplierAccessInfo(StandardReceiveParam.build(param.getParam(), StandardSupplyCreateParam.class));
            case RequestMethod.Bid.Receive.SUPPLY_CANCEL:
                // 取消报价
                return this.cancelSupply(StandardReceiveParam.build(param.getParam(), StandardSupplyCancelParam.class));
            case RequestMethod.Bid.Receive.SUPPLY_FILE_UPDATE:
                // 修改报价附件
                return this.updateSupplyFile(StandardReceiveParam.build(param.getParam(), StandardSupplyFileUpdateParam.class));
            case RequestMethod.Bid.Receive.ORDER_CONFIRM:
                // 确认订单
                return this.confirmOrder(StandardReceiveParam.build(param.getParam(), StandardOrderConfirmParam.class));
            case RequestMethod.Bid.Receive.DELIVER_CREATE:
                // 订单发货
                return this.createDeliver(StandardReceiveParam.build(param.getParam(), StandardOrderDeliverParam.class));
            case RequestMethod.Bid.Receive.APPLY_PURCHASER_ACCESS:
                // 申请采购企业准入
                return this.applyPurchaserAccess(param.getParam());
            default:
                return Result.error("接口不存在");
        }
    }

    protected Result checkSupplierAccessInfo(StandardSupplyCreateParam param) {
        return null;
    }


    /**
     * 创建报价/修改报价
     *
     * @param param
     * @return
     *
     * @author 延晓磊
     * @since 2022年11月04日
     */
    protected Result createSupply(StandardSupplyCreateParam param){
        return null;
    }

    /**
     * 取消报价
     *
     * @param param
     * @return
     *
     * @author 延晓磊
     * @since 2022年11月04日
     */
    protected Result cancelSupply(StandardSupplyCancelParam param){
        return null;
    }

    /**
     * 修改报价附件
     *
     * @param param
     * @return
     *
     * @author 延晓磊
     * @since 2022年11月07日
     */
    protected Result updateSupplyFile(StandardSupplyFileUpdateParam param){
        return null;
    }

    /**
     * 确认订单
     *
     * @param param
     * @return
     *
     * @author 延晓磊
     * @since 2022年11月10日
     */
    protected Result confirmOrder(StandardOrderConfirmParam param){
        return null;
    }

    /**
     * 订单发货
     *
     * @param param
     * @return
     *
     * @author 延晓磊
     * @since 2022年11月10日
     */
    protected Result createDeliver(StandardOrderDeliverParam param){
        return null;
    }

    /**
     * 申请采购企业准入
     *
     * @param param
     * @return
     *
     * @author 张敏
     * @since 2023年03月13日
     */
    protected Result applyPurchaserAccess(String param){
        return null;
    }

}
